#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@Project ：python_learning 
@File ：代理模式.py
@IDE  ：PyCharm 
@Author ：李涵彬
@Date ：2024/3/1 23:15 
"""

"""
代理模式 (Proxy Pattern)
代理模式是一种结构型设计模式，用于提供对其他对象的间接访问。代理控制着对于真实对象的访问，并允许在访问对象之前或之后执行额外的操作。

在 Python 中，代理模式通常以多种形式出现，包括虚拟代理、保护代理、远程代理等。以下是一个简单的示例：

在这个示例中，Subject 定义了主题接口，RealSubject 是真实主题类，而 Proxy 则是代理类。客户端代码通过代理来访问真实主题。

代理模式的常见应用包括延迟加载（虚拟代理）、权限控制（保护代理）、远程对象访问（远程代理）等。通过使用代理，可以更好地控制对于对象的访问，同时提供了更多的灵活性和可扩展性。
"""

from abc import ABC, abstractmethod


# 主题接口
class Subject(ABC):
	@abstractmethod
	def request(self):
		pass


# 真实主题
class RealSubject(Subject):
	def request(self):
		print("真实主题：处理请求")


# 代理
class Proxy(Subject):
	def __init__(self):
		self._real_subject = RealSubject()

	def request(self):
		print("代理：转发请求给真实主题")
		self._real_subject.request()


# 客户端代码
if __name__ == "__main__":
	proxy = Proxy()
	proxy.request()
